package cn.idcast.demo04;

import java.io.*;
import java.util.HashMap;

/*
练习；
    对文本的内容进行排序
    按照（1,2,3.。。）顺序排序


分析；
1，创建一个HashMap集合对象，可以；存储每行文本的序号（1,2,3.。。）；value；存储每行的文本
2，创建字符缓冲输入流对象，构造方法中绑定字符输入流
3，创建字符缓冲输出流对象，构造方法中绑定字符输入流
4，使用字符缓冲输入流中的方法readLine，逐行读取文本
5，对读取到的文本进行切割，获取行中的序号和文本内容
6，把切割好的序号和文本的内容存储到HashMap集合中（key序号是有序的，会自动排序1,，2,3）
7，遍历HashMap集合，获取每一个键值对
8，把每一个键值对，拼接为一个文本行
9，把拼接好的文本，使用字符缓冲输出流中的方法write，写到文件中
10，释放资源
 */
public class Demo01Test {
    public static void main(String[] args) throws IOException {
        //1，创建一个HashMap集合对象，key；存储每行文本的序号（1,2,3.。。）；value；存储每行的文本
        HashMap<String,String> map = new HashMap<>();
        //2，创建字符缓冲输入流对象，构造方法中绑定字符输入流
        BufferedReader br = new BufferedReader(new FileReader("E:\\WkJava\\day03--code\\in.txt"));
        //3，创建字符缓冲输出流对象，构造方法中绑定字符输入流
        BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\WkJava\\day03--code\\out.txt"));
        //4，使用字符缓冲输入流中的方法readLine，逐行读取文本
        String line ;
        while ((line = br.readLine())!= null){
            //5，对读取到的文本进行切割，获取行中的序号和文本内容
            String[] arr = line.split("\\，");
            //6，把切割好的序号和文本的内容存储到HashMap集合中（key序号是有序的，会自动排序1,，2,3）
            map.put(arr[0],arr[1]);//序号和文本

        }
        //7，遍历HashMap集合，获取每一个键值对
        for(String key:map.keySet()){
            String value = map.get(key);
            //8，把每一个键值对，拼接为一个文本行
            line = key+ ","+value;
            //9，把拼接好的文本，使用字符缓冲输出流中的方法write，写到文件中
            bw.write(line);
            bw.newLine();
        }
        //10，释放资源
        bw.close();
        br.close();

    }
}
